Matthias Clasen [Fri, 14 Feb 2020 13:09:59 +0000 (08:09 -0500)]
gdk: Add event constructors
Add private API to construct events. This is a step towards
making events readonly, and not objects anymore.
The constructors here are sufficient to convert the Wayland
backend over. More may be added for other backends as needed.
Open issues:
- history
Matthias Clasen [Tue, 18 Feb 2020 00:44:07 +0000 (19:44 -0500)]
Make a11y testsuite pass
Matthias Clasen [Thu, 20 Feb 2020 19:08:45 +0000 (19:08 +0000)]
Merge branch 'master' into 'master'
build: gdk/wayland/cursor depends on wayland-client
See merge request GNOME/gtk!1453
Dominique Leuenberger [Thu, 20 Feb 2020 16:07:02 +0000 (17:07 +0100)]
build: gdk/wayland/cursor depends on wayland-client
On distros where wayland-client.h might not be directly in /usr/include
we fail to find the correct headers otherwise.
Timm Bäder [Thu, 20 Feb 2020 09:30:14 +0000 (10:30 +0100)]
scale: Remove useless extra local variable
Timm Bäder [Thu, 20 Feb 2020 09:22:29 +0000 (10:22 +0100)]
scale: Remove unused member
Timm Bäder [Wed, 19 Feb 2020 17:13:55 +0000 (18:13 +0100)]
emojichooser: Add style class to emoji toolbar
Closes #1013
Timm Bäder [Wed, 19 Feb 2020 08:18:25 +0000 (09:18 +0100)]
filechooserwidget: Fold function into only caller
Timm Bäder [Wed, 19 Feb 2020 08:12:12 +0000 (09:12 +0100)]
filechooserwidget: Use a proper GtkPopoverMenu
Instead of a fake one where we add .menu to a normal popover. This makes
the menu look like other context menus.
Timm Bäder [Wed, 19 Feb 2020 07:11:05 +0000 (08:11 +0100)]
filechoosererrorstack: Set a layout manager
Otherwise it doesn't know what to do with its child widget.
Timm Bäder [Wed, 19 Feb 2020 06:35:40 +0000 (07:35 +0100)]
filechooserwidget: Allow typing a location in recent mode
This is triggered by typing / or hitting Ctrl+L. Since we don't have a
visual indicator for this mode right now anyway, the reason for not
allowing it in recent mode cited in the comment just above the
early-exit is irrelevant.
Closes #2178
Timm Bäder [Wed, 19 Feb 2020 06:35:29 +0000 (07:35 +0100)]
filechooserwidget: Remove unused constants
Timm Bäder [Mon, 17 Feb 2020 14:46:41 +0000 (15:46 +0100)]
text: Remove gtk_text_get_im_context()
Unused.
Timm Bäder [Mon, 17 Feb 2020 08:38:34 +0000 (09:38 +0100)]
docs: Remove focus_tracking.txt
All the info in there is outdated and not useful.
Timm Bäder [Mon, 17 Feb 2020 08:37:49 +0000 (09:37 +0100)]
docs: Remove developers.txt
Everything in there has either been removed in the past or is outdated
information.
Timm Bäder [Mon, 17 Feb 2020 08:36:52 +0000 (09:36 +0100)]
docs: Remove dnd_internals.txt
This is either already completely outdated or will be soon.
Timm Bäder [Tue, 18 Feb 2020 15:23:26 +0000 (16:23 +0100)]
spinbutton: Remove manual queue_draw() calls
Everything is automatically redrawn when changing the value, etc.
Timm Bäder [Tue, 18 Feb 2020 10:03:37 +0000 (11:03 +0100)]
popvermenu: Clarify css node docs
We add the .menu css class to the popover main node, not its contents
node.
Timm Bäder [Tue, 18 Feb 2020 09:36:04 +0000 (10:36 +0100)]
aboutdialog: Clarify docs and fix preconditions
Timm Bäder [Tue, 18 Feb 2020 09:02:38 +0000 (10:02 +0100)]
modelbutton: Un-select on mouse leave
This brings us closer to the old GtkMenuItem behavior and also makes
more sense.
Timm Bäder [Tue, 18 Feb 2020 08:42:29 +0000 (09:42 +0100)]
aboutdialog: Replace visited_links GList with GPtrArray
Timm Bäder [Tue, 18 Feb 2020 08:31:32 +0000 (09:31 +0100)]
aboutdialog: Use new GtkStackPage API
Timm Bäder [Tue, 18 Feb 2020 08:27:42 +0000 (09:27 +0100)]
stack: Add GtkStackPage:visible accessors
Benjamin Otte [Wed, 19 Feb 2020 18:57:14 +0000 (18:57 +0000)]
Merge branch 'wip/xdg-popup-async-relayout' into 'master'
Synchronous popup layout
See merge request GNOME/gtk!1241
Emmanuele Bassi [Wed, 19 Feb 2020 15:35:21 +0000 (15:35 +0000)]
Merge branch 'ci-flatpak' into 'master'
ci: Update flatpak jobs
See merge request GNOME/gtk!1451
Emmanuele Bassi [Wed, 19 Feb 2020 15:04:58 +0000 (15:04 +0000)]
ci: Update flatpak jobs
The CI infrastructure was changed to run with fewer privileges, so we
need to adapt our Flatpak jobs to compensate.
See: https://mail.gnome.org/archives/desktop-devel-list/2020-February/msg00055.html
Jonas Ådahl [Sun, 16 Feb 2020 11:59:24 +0000 (12:59 +0100)]
gdk/surface: Replace move_to_rect() with GdkPopupLayout based API
Replace the gdk_surface_move_to_rect() API with a new GdkSurface
method called gdk_surface_present_popup() taking a new GdkPopupLayout
object describing how they should be laid out on screen.
The layout properties provided are the same as the ones used with
gdk_surface_move_to_rect(), except they are now set up using
GdkPopupLayout.
Calling gdk_surface_present_popup() will either show the popup at the
position described using the popup layout object and a new unconstrained
size, or reposition it accordingly.
In some situations, such as when a popup is set to autohide, presenting
may immediately fail, in case the grab was not granted by the display
server.
After a successful present, the result of the layout can be queried
using the following methods:
* gdk_surface_get_position() - to get the position relative to its
parent
* gdk_surface_get_width() - to get the current width
* gdk_surface_get_height() - to get the current height
* gdk_surface_get_rect_anchor() - to get the anchor point on the anchor
rectangle the popup was effectively positioned against given
constraints defined by the environment and the layout rules provided
via GdkPopupLayout.
* gdk_surface_get_surface_anchor() - the same as the one above but for
the surface anchor.
A new signal replaces the old "moved-to-rect" one -
"popup-layout-changed". However, it is only intended to be emitted when
the layout changes implicitly by the windowing system, for example if
the monitor resolution changed, or the parent window moved.
Jonas Ådahl [Wed, 19 Feb 2020 08:31:32 +0000 (09:31 +0100)]
gdk/surface: Reset position after hiding
The x and y position of GdkSurface is only valid when visible, so reset
them to their inital state after hiding.
Jonas Ådahl [Sun, 16 Feb 2020 15:42:52 +0000 (16:42 +0100)]
wayland: Simplify logic deciding whether to use xdg_popup
From a handful of hueristics and guess-work, to a single
`surface->surface_type == GDK_SURFACE_POPUP`.
Jonas Ådahl [Sun, 16 Feb 2020 15:24:12 +0000 (16:24 +0100)]
wayland: Fix top-most-popup check
We can map a non-grabbing popup wherever, it's just the grabbing
popup-chain that needs to be ensured not to break any ordering rules.
Fix this by managing two lists; one of open popups, and another for
grabbing ones.
Jonas Ådahl [Sat, 15 Feb 2020 23:32:26 +0000 (00:32 +0100)]
gdk: Move GdkGeometry declaration to gdktypes.h
Jonas Ådahl [Sat, 15 Feb 2020 23:32:05 +0000 (00:32 +0100)]
gdk: Move GdkGravity to gdktypes.h
Jonas Ådahl [Sat, 15 Feb 2020 23:28:01 +0000 (00:28 +0100)]
x11: Make gdk_surface_get_position() return relative position
The returned position should be relative to the parent surface, but
GdkSurface::x,y were only managed properly for O-R windows. This makes
it correct for regular windows too.
Jonas Ådahl [Mon, 10 Feb 2020 09:55:59 +0000 (10:55 +0100)]
wayland: Simplify popup parent discovery
Now popups surfaces are always created with the parent set, so we don't
need to implement vorious guess work to try to find what the parent
might be. Remove that code and just use GdkSurface::parent which is
where the parent set during construction ends up at.
Jonas Ådahl [Mon, 10 Feb 2020 08:56:18 +0000 (09:56 +0100)]
wayland: Remove old "gdk-attached-grab-surface" hackery
The corresponding code in gtk/ is long gone, so it's luckly unused these
days.
Jonas Ådahl [Tue, 7 Jan 2020 16:13:22 +0000 (17:13 +0100)]
wayland/surface: Add per surface configuration event queues
Add event queues specifically for surface configuration events
(xdg_surface.configure, xdg_toplevel.configure, xdg_popup.configure etc)
so that a configuration can be completed without having side effects on
other surfaces. This will be used to synchronously configure specific
GdkSurfaces, as is needed by the Gtk layout mechanisms.
Jonas Ådahl [Tue, 10 Dec 2019 18:23:17 +0000 (19:23 +0100)]
gdk/wayland/surface: Use dedicated bool for frame callback freezing
The freezing is conditioned on various state, so lets make the thawing a
bit more robust. Without this there was a risk that we'd thaw too many
times if there was a frame callback requested while the conditions for
the freezing were not met.
Jonas Ådahl [Wed, 24 Jul 2019 16:44:32 +0000 (18:44 +0200)]
wayland: Remove position method split
Position can only be done via gdk_surface_queue_relayout(); the legacy
way is no longer possible, so remove the legacy positioning code.
Jonas Ådahl [Mon, 22 Jul 2019 20:27:37 +0000 (22:27 +0200)]
gdk/surface: Use enum type for surface type
Jonas Ådahl [Mon, 22 Jul 2019 20:26:39 +0000 (22:26 +0200)]
tests/popover: Add check box for switching autohide prop
Jonas Ådahl [Wed, 24 Jul 2019 13:45:34 +0000 (15:45 +0200)]
popover: Unrealize when autohide prop changes
Changing the autohide property means the popover needs to be remapped.
Remapping may need user interaction, so lets just unrealize the popover
if the property changes, forcing the application to remap it should it
be shown again.
Timm Bäder [Wed, 19 Feb 2020 07:43:51 +0000 (07:43 +0000)]
Merge branch 'file-filter-name-property' into 'master'
GtkFileFilter: Add a GObject property for the name
See merge request GNOME/gtk!376
Matthias Clasen [Wed, 19 Feb 2020 01:50:49 +0000 (01:50 +0000)]
Merge branch 'icontheme-api' into 'master'
Icontheme api
Closes #2410
See merge request GNOME/gtk!1449
Matthias Clasen [Tue, 18 Feb 2020 05:56:37 +0000 (00:56 -0500)]
icontheme: Update the api
Add properties, and use string arrays instead of lists.
Among other things, this renames gtk_icon_theme_list_icons
to gtk_icon_theme_get_icon_names.
Fixes: https://gitlab.gnome.org/GNOME/gtk/issues/2410
Matthias Clasen [Wed, 19 Feb 2020 01:18:04 +0000 (01:18 +0000)]
Merge branch 'wip/otte/for-master' into 'master'
debug: When debug-printing, treat NULL as the default display
See merge request GNOME/gtk!1450
Benjamin Otte [Wed, 19 Feb 2020 00:20:19 +0000 (01:20 +0100)]
debug: When debug-printing, treat NULL as the default display
Otherwise we lose debug prints from all code that allows NULL displays.
Matthias Clasen [Tue, 18 Feb 2020 22:15:56 +0000 (22:15 +0000)]
Merge branch 'wip/otte/dnd' into 'master'
More DND rework
See merge request GNOME/gtk!1445
Emmanuele Bassi [Tue, 18 Feb 2020 10:58:06 +0000 (10:58 +0000)]
Merge branch 'dialog-headerbar-type-annotation' into 'master'
GtkDialog: Add `type Gtk.HeaderBar` annotation to headerbar getter return value
See merge request GNOME/gtk!1447
Sebastian Dröge [Tue, 18 Feb 2020 08:55:31 +0000 (10:55 +0200)]
GtkDialog: Add `type Gtk.HeaderBar` annotation to headerbar getter return value
Benjamin Otte [Tue, 18 Feb 2020 01:58:58 +0000 (02:58 +0100)]
colorbutton: Fix drag source
By running it in the capture phase, it will not be starved for events by
the button's click source and make drags actually start a color drag
operation.
Benjamin Otte [Tue, 18 Feb 2020 01:02:34 +0000 (02:02 +0100)]
Remove gdk_content_provider_new_with_formats()
See the removal of gdk_content_provider_new_with_callback() for a
rationale.
Benjamin Otte [Tue, 18 Feb 2020 01:01:52 +0000 (02:01 +0100)]
tests: Modernize testdnd2
Benjamin Otte [Tue, 18 Feb 2020 00:41:42 +0000 (01:41 +0100)]
dnd: Port the TreeModel machinery to GValue DND
Matthias Clasen [Mon, 17 Feb 2020 22:31:17 +0000 (22:31 +0000)]
Merge branch 'text-emoji-history' into 'master'
text: Treat Emoji insertion like clipboard
See merge request GNOME/gtk!1444
Benjamin Otte [Mon, 17 Feb 2020 03:38:22 +0000 (04:38 +0100)]
placessidebar: Modernize DND
No more shooting pointers through pipes
Benjamin Otte [Mon, 17 Feb 2020 02:58:28 +0000 (03:58 +0100)]
notebook: Use proper DND
Actually use GValues for the DND operation instead of sending GBytes of
pointer addresses through pipes.
This is a bit complicated because we need to special-case rootwindow
drops, because they're handled on the source side, so we need a custom
ContentProvider.
Benjamin Otte [Mon, 17 Feb 2020 02:08:54 +0000 (03:08 +0100)]
notebook: Move dnd scrolling via arrows to own drop target
This removes excess code from the tab dnd machinery
Benjamin Otte [Mon, 17 Feb 2020 02:04:37 +0000 (03:04 +0100)]
dragdest: Handle NULL content formats everywhere
NULL means we don't do content formats checks and accept everything.
We use this for notebook arrows or expanders that react to ongoing
drags.
Benjamin Otte [Mon, 17 Feb 2020 01:21:13 +0000 (02:21 +0100)]
contentprovider: Add a union content provider
Matthias Clasen [Mon, 17 Feb 2020 20:05:09 +0000 (15:05 -0500)]
text: Treat Emoji insertion like clipboard
Enter the Emoji inseration in the undo history.
Also, stop stashing away the selection when we
pop up the Emoji chooser, and use the selection
as-is when we insert the Emoji.
Benjamin Otte [Mon, 17 Feb 2020 01:20:43 +0000 (02:20 +0100)]
placessidebar: Don't claim to support text dnd
Because you don't. And never did.
Benjamin Otte [Sun, 16 Feb 2020 18:52:17 +0000 (19:52 +0100)]
dragdest: Make gtk_drop_target_new() args be transfer full
Saves tons of code.
Benjamin Otte [Sun, 16 Feb 2020 17:48:45 +0000 (18:48 +0100)]
colorbutton, colorswatch: Simplify DND
- Use GDK_TYPE_RGBA and let GDK do the conversion from
application-x-color
- Don't do extra mime type checks when accept() does that for us already
Benjamin Otte [Sun, 16 Feb 2020 17:43:45 +0000 (18:43 +0100)]
dragdest: Simplify function
Make it obvious that the functions checks one condition and then the
other.
Benjamin Otte [Sun, 16 Feb 2020 17:32:42 +0000 (18:32 +0100)]
dnd: simplify code
The old code did mimetype checks everywhere when type compatibility has
since been moved to the GtkDropTarget::accept signal.
So the code can now just assume a compatible mime type exists.
Benjamin Otte [Sun, 16 Feb 2020 15:22:37 +0000 (16:22 +0100)]
dnd: Remove gdk_content_provider_new_with_callback()
Content providers are meant to be immutable, apart from very special
cases, but in those cases they need to emit
gdk_content_provider_content_changed().
Having a constructor that just uses a get_func invites abuse of this
by not making developers aware of those requirments.
In fact, all users in GTK failed to do this.
Instead, code should use the GtkDragSource::prepare signal to create
content providers when needed.
The same problem exists with gdk_content_provider_new_with_formats(),
but this commit doesn't touch that.
Benjamin Otte [Sun, 16 Feb 2020 13:29:22 +0000 (14:29 +0100)]
testdnd3: Use GValue dnd
Benjamin Otte [Sun, 16 Feb 2020 13:24:03 +0000 (14:24 +0100)]
contentprovider: Add gdk_content_provider_new_typed()
Gets around the boilerplate required to create and initialize a GValue
by having this function doing it via G_VALUE_COLLECT().
Benjamin Otte [Sun, 16 Feb 2020 13:14:27 +0000 (14:14 +0100)]
wayland: Destroy the offer on gdk_drop_finish()
Otherwise the compositor won't be aware the dnd failed and will in turn
not notify the drag source.
Benjamin Otte [Sun, 16 Feb 2020 05:08:27 +0000 (06:08 +0100)]
drop: Add a state machine for tracking events
Benjamin Otte [Sun, 16 Feb 2020 19:05:05 +0000 (20:05 +0100)]
widget: Fix namespacing problem
In Vala and JS at least, gtk_widget_get_css_name() and
gtk_widget_class_get_css_name() are resolved to
GtkWidget.get_css_name().
To avoid this problem, we rename the class version.
Benjamin Otte [Sun, 16 Feb 2020 18:57:45 +0000 (19:57 +0100)]
widget: Fix typos for css-clases property
Benjamin Otte [Sat, 15 Feb 2020 23:45:25 +0000 (23:45 +0000)]
Merge branch 'wip/otte/dnd' into 'master'
some DND fixes
See merge request GNOME/gtk!1440
Benjamin Otte [Sat, 15 Feb 2020 20:07:26 +0000 (21:07 +0100)]
tests: Do proper local DND
Just transfer GValues.
Benjamin Otte [Sat, 15 Feb 2020 20:04:57 +0000 (21:04 +0100)]
wayland: Use a magic mime type for local DND
Otherwise the compositor gets all confused when it's trying to make
drag happen but we know it's not going to happen.
After all, we exchange data behind its back, we just need to keep it
informed.
Benjamin Otte [Sat, 15 Feb 2020 19:26:55 +0000 (20:26 +0100)]
dragdest: Use format matching APIs
Benjamin Otte [Sat, 15 Feb 2020 19:02:44 +0000 (20:02 +0100)]
drop: Ensure all relevant formats are available
1. GdkDrop does deserialization, so add the deserialize formats
2. If the drop is local, we can copy straight from the drag, so we can
also copy all its formats. This fixes cases where the backend would
drop formats it doesn't support.
Timm Bäder [Sat, 15 Feb 2020 10:19:25 +0000 (11:19 +0100)]
calendar: Emit {next,prev}-{month,year} signals
Fixes #833
Timm Bäder [Sat, 15 Feb 2020 10:10:19 +0000 (11:10 +0100)]
widget: Use get_css_name() in get_property()
Instead of reimplementing it there.
Timm Bäder [Sat, 15 Feb 2020 09:45:33 +0000 (10:45 +0100)]
Adwaita: Add focus outlines back to scale troughs
Fixes #189
Timm Bäder [Sat, 15 Feb 2020 09:25:41 +0000 (10:25 +0100)]
coloreditor: Scale h value to 360
Fixes #1321
Timm Bäder [Sat, 15 Feb 2020 09:14:13 +0000 (10:14 +0100)]
range: Avoid rounding errors when allocating highlight
Fixes #2438
Timm Bäder [Sat, 15 Feb 2020 08:55:27 +0000 (09:55 +0100)]
widget: Add css-classes property
Mirroring the values added and removed via {add,remove}_css_class().
Timm Bäder [Fri, 14 Feb 2020 17:25:01 +0000 (18:25 +0100)]
infobar: Remove _get_{action,content}_area()
Accessors like these are weird to have and we can add widgets to the
content area via gtk_container_add() as well as add widgets to the
action area via gtk_info_bar_add_action_widget().
Timm Bäder [Fri, 14 Feb 2020 17:22:59 +0000 (18:22 +0100)]
Remove gtk_info_bar_get_content_area() uses
We can just add() to the info bar directly.
Timm Bäder [Fri, 14 Feb 2020 17:14:33 +0000 (18:14 +0100)]
testinfobar: Stop using gtk_info_bar_get_content_area()
We have an easier way of adding widgets to the content area of an
infobar: Just gtk_container_add() them like usual.
Timm Bäder [Fri, 14 Feb 2020 17:06:39 +0000 (18:06 +0100)]
infobar: Don't store close button visibility separately
We can already set and query that value via
gtk_widget_{get,set}_visible() on the close button.
Timm Bäder [Fri, 14 Feb 2020 17:00:48 +0000 (18:00 +0100)]
actionbar: Use a bin layout
Timm Bäder [Thu, 13 Feb 2020 17:40:20 +0000 (18:40 +0100)]
calendar: Add style class to today's label
Add the .today style class to the label indicating the current day.
Fixes #230
Timm Bäder [Thu, 13 Feb 2020 16:53:42 +0000 (17:53 +0100)]
calendar: Document style classes
Fixes #790
Matthias Clasen [Fri, 14 Feb 2020 21:46:43 +0000 (16:46 -0500)]
events: Make proximity and scroll events have tools
The Wayland backend tries to set device tools on these
events, and it was just an oversight that they don't
carry them.
Benjamin Otte [Fri, 14 Feb 2020 20:42:11 +0000 (20:42 +0000)]
Merge branch 'wip/otte/for-master' into 'master'
Drop GTK_WINDOW_POPUP
See merge request GNOME/gtk!1437
Matthias Clasen [Mon, 30 Dec 2019 06:24:05 +0000 (01:24 -0500)]
Drop gdk_surface_new_temp
GTK is not using this API anymore, and we want
to consolidate our surface types to just toplevels
and popups.
Matthias Clasen [Mon, 30 Dec 2019 06:23:26 +0000 (01:23 -0500)]
testsuite: Stop using gdk_surface_new_temp
We can just use regular toplevels here.
Benjamin Otte [Fri, 14 Feb 2020 20:13:42 +0000 (21:13 +0100)]
window: Remove GtkWindowType and window->type
And remove code that was making decisions on the type and just use
the part for toplevels.
Benjamin Otte [Fri, 14 Feb 2020 20:15:45 +0000 (21:15 +0100)]
testsuite: Use GtkTextDirection instead of GtkWindowType
GtkWindowType is aout to be dropped, so use another enum for the enum
tests - one that is likely to survive for a long time.
Benjamin Otte [Fri, 14 Feb 2020 19:57:53 +0000 (20:57 +0100)]
textview: Fix docs typo
Benjamin Otte [Fri, 14 Feb 2020 19:55:36 +0000 (20:55 +0100)]
window: Remove type argument from gtk_window_new()
Benjamin Otte [Fri, 14 Feb 2020 19:32:10 +0000 (20:32 +0100)]
testsuite: Replace popups with toplevels
The tests do not depend on the window being a popup.
Benjamin Otte [Fri, 14 Feb 2020 18:32:50 +0000 (19:32 +0100)]
builder: Use different construct-only property
The window type is going away, so use the css name instead.